
local res 
local str = 'ababaaaa'
-- gsub -> global substitute
res = string.gsub(str,'ab','hb')
assert(res == 'hbhbaaaa')  --结果全部匹配的都进行了替换

print( str)
local res = string.gsub(str,'ab','hb',1)
assert(res == 'hbabaaaa')  --结果只替换了第1个

local res = string.find(str,'aa') --索引结果从1开始，这里是5.
assert(res == 5)  

a = string.len(str) -- 取得字符串的长度
assert(a == #str)

a = string.char(98)
assert(a == 'b')

a = string.byte('啊')
print(a)

local str = 'hello.world.txt'
local idx1 = string.find(str,'%.',-5)  --使用转意字符
local idx2 = string.find(str,'.',-5,true)  -- 关闭模式匹配
assert(idx1 == idx2)

local res = string.sub(str,1,idx1-1)  -- sub -> 返回一个子串
print(res)
assert(res == 'hello.world')  -- 截取文件名

--[[
string.sub (s, i [, j])
返回 s 的子串， 该子串从 i 开始到 j 为止； i 和 j 都可以为负数。 如果不给出 j ，就当它是 -1 （和字符串长度相同）。 特别是， 调用 string.sub(s,1,j) 可以返回 s 的长度为 j 的前缀串， 而 string.sub(s, -i) 返回长度为 i 的后缀串。

如果在对负数索引转义后 i 小于 1 的话，就修正回 1 。 如果 j 比字符串的长度还大，就修正为字符串长度。 如果在修正之后，i 大于 j， 函数返回空串。 
--]]


local a = string.char(97,10,65)   --10 -> \n
print(a)


--string.format 函数连接字符串
s1 = "hello" 
s2 = "world"
for idx = 1,3 do
	s1 = string.format("%s%s",s1,s2)
end
print(s1)
s1 = string.format("%s's length is %d",s1,string.len(s1))
print(s1)

--格式化数字
sa = 17.345556
str = string.format("%.2f hahaha",sa)
print(sa)
print(str)

--字符串查找
str="my name is John Smith."
sStart,sEnd=string.find(str,"John")
print(sStart,sEnd)

--模式查找
str = "The price is $17.50"
filter = "$%d%d.%d%d"
print(string.sub(str,string.find(str,filter)))

--字符替换
str = string.gsub(str,"%d%d","*")
print(str)

str = string.gsub(str,"p%w+","value")
print(str)

--字符串查找
for word in string.gmatch(str,"%a+") do
	print(word)
end

assert(string.match(str,'The.+%*'))

local str1 = "hello"
local str2 = "he" .. "llo"
assert(str1 == str2)

res = type("aa")
print(res)
res = type("")
print(res)
res = type(nil)
print(res)

local str = string.format("haha%003d",151)
print(str)


str = "DJ_12,DJ_14,DJ_15"
for word in string.gmatch(str,"DJ_%d+") do
	print(word)
end



